home *** CD-ROM | disk | FTP | other *** search
- This file is return.def, from which is created return.c.
- It implements the builtin "return" in Bash.
-
- Copyright (C) 1987, 1989, 1991 Free Software Foundation, Inc.
-
- This file is part of GNU Bash, the Bourne Again SHell.
-
- Bash is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free
- Software Foundation; either version 1, or (at your option) any later
- version.
-
- Bash is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- for more details.
-
- You should have received a copy of the GNU General Public License along
- with Bash; see the file COPYING. If not, write to the Free Software
- Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
- $PRODUCES return.c
-
- $BUILTIN return
-
- $FUNCTION return_builtin
- $SHORT_DOC return [n]
- Causes a function to exit with the return value specified by N. If N
- is omitted, the return status is that of the last command.
- $END
-
- #include "../shell.h"
-
- /* If we are executing a user-defined function then exit with the value
- specified as an argument. if no argument is given, then the last
- exit status is used. */
- int
- return_builtin (list)
- WORD_LIST *list;
- {
- extern int last_command_exit_value;
- extern int return_catch_flag, return_catch_value;
- extern jmp_buf return_catch;
-
- return_catch_value = get_numeric_arg (list);
-
- if (!list)
- return_catch_value = last_command_exit_value;
-
- if (return_catch_flag)
- longjmp (return_catch, 1);
- else
- {
- builtin_error ("Can only `return' from a function");
- return (EXECUTION_FAILURE);
- }
- }
-
-
-